{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Using ZigZag\n",
    "===\n",
    "[ZigZag](https://pypi.python.org/pypi/ZigZag) is a (very) small library [I](http://twitter.com/generativist) wrote for calculating the peaks and valleys of a sequence (e.g. time series data). It also can calculate the [maximum drawdown](http://en.wikipedia.org/wiki/Drawdown_(economics)), a useful metric for trading analysis. The repository is on github at [https://github.com/jbn/ZigZag](https://github.com/jbn/ZigZag). Prior to version `0.1.4` it optionally used [`numba`](https://github.com/numba/numba); starting with version `0.1.4`, I switched to [`Cython`](http://cython.org/). \n",
    "\n",
    "This notebook demonstrates how to use ZigZag, and draws attention to a few caveats.\n",
    "\n",
    "Installation\n",
    "---\n",
    "`pip install zigzag`\n",
    "\n",
    "Basic Usage\n",
    "---"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "tags": []
   },
   "outputs": [],
   "source": [
    "%matplotlib inline\n",
    "\n",
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "from zigzag import *"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "tags": []
   },
   "outputs": [],
   "source": [
    "# This is not nessessary to use zigzag. It's only here so that\n",
    "# this example is reproducible.\n",
    "np.random.seed(1997)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "tags": []
   },
   "outputs": [],
   "source": [
    "X = np.cumprod(1 + np.random.randn(100) * 0.01)\n",
    "pivots = peak_valley_pivots(X, 0.03, -0.03)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "tags": []
   },
   "outputs": [],
   "source": [
    "def plot_pivots(X, pivots):\n",
    "    plt.xlim(0, len(X))\n",
    "    plt.ylim(X.min()*0.99, X.max()*1.01)\n",
    "    plt.plot(np.arange(len(X)), X, 'k:', alpha=0.5)\n",
    "    plt.plot(np.arange(len(X))[pivots != 0], X[pivots != 0], 'k-')\n",
    "    plt.scatter(np.arange(len(X))[pivots == 1], X[pivots == 1], color='g')\n",
    "    plt.scatter(np.arange(len(X))[pivots == -1], X[pivots == -1], color='r')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The following plot illustrates how the sequence was annotated. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_pivots(X, pivots)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The following shows how you can use `pivots_to_modes` to inspect the segments."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>count</th>\n",
       "      <th>mean</th>\n",
       "      <th>std</th>\n",
       "      <th>min</th>\n",
       "      <th>25%</th>\n",
       "      <th>50%</th>\n",
       "      <th>75%</th>\n",
       "      <th>max</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>-1</th>\n",
       "      <td>43.0</td>\n",
       "      <td>-0.004875</td>\n",
       "      <td>0.009995</td>\n",
       "      <td>-0.025602</td>\n",
       "      <td>-0.011249</td>\n",
       "      <td>-0.005225</td>\n",
       "      <td>0.000075</td>\n",
       "      <td>0.017768</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>56.0</td>\n",
       "      <td>0.005506</td>\n",
       "      <td>0.009663</td>\n",
       "      <td>-0.018131</td>\n",
       "      <td>0.000144</td>\n",
       "      <td>0.004643</td>\n",
       "      <td>0.010315</td>\n",
       "      <td>0.028133</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    count      mean       std       min       25%       50%       75%  \\\n",
       "-1   43.0 -0.004875  0.009995 -0.025602 -0.011249 -0.005225  0.000075   \n",
       " 1   56.0  0.005506  0.009663 -0.018131  0.000144  0.004643  0.010315   \n",
       "\n",
       "         max  \n",
       "-1  0.017768  \n",
       " 1  0.028133  "
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "modes = pivots_to_modes(pivots)\n",
    "pd.Series(X).pct_change().groupby(modes).describe()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Calculate the peak to valley returns for all of the segments."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([ 0.09370263, -0.05981991,  0.07204542, -0.03419711,  0.04289563,\n",
       "       -0.04197655,  0.03001853, -0.05506552,  0.07707074, -0.016124  ])"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "compute_segment_returns(X, pivots)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Finally, compute the oft-quoted (in financial literature) `max_drawdown`."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.06755575755355037"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "max_drawdown(X)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Pandas Compatability\n",
    "---\n",
    "The `peak_valley_pivots` function works on pandas `series` assuming the index is either a DateTimeIndex or is \\[0, n). [Pandas](http://pandas.pydata.org/) is great."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "from pandas_datareader import get_data_yahoo\n",
    "\n",
    "X = get_data_yahoo('GOOG')['Adj Close']\n",
    "pivots = peak_valley_pivots(X.values, 0.2, -0.2)\n",
    "ts_pivots = pd.Series(X, index=X.index)\n",
    "ts_pivots = ts_pivots[pivots != 0]\n",
    "X.plot()\n",
    "ts_pivots.plot(style='g-o');"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# `#WONTFIX`"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "[in PR#13 `ytian` writes](https://github.com/jbn/ZigZag/pull/13),\n",
    "\n",
    "> the code has some bugs for some test cases:\n",
    "> code:\n",
    ">\n",
    "> a = np.array([1, 1.2, 1.5, 1.8, 2.4, 3.3, 2.4, 1.5, 1.6])  \n",
    "> peak_valley_pivots(a, 0.2, -0.2) \n",
    "> \n",
    "> output (wrong result)  \n",
    "> array([-1, 0, 0, 0, 0, 1, 0, 0, 1]) \n",
    "> \n",
    "> output (after fix)  \n",
    "> array([-1, 0, 0, 0, 0, 1, 0, -1, 1])\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Visually,"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXcAAAD4CAYAAAAXUaZHAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8qNh9FAAAACXBIWXMAAAsTAAALEwEAmpwYAAA7Z0lEQVR4nO3deXjMV9/H8fdJRNJYYitqCbVT1FpBS6vuIlIaqlWxlRbVRXuXh97V5eGubhSt1C4pIna1TbRqq32XKKqx7xFL9m0yc54/EnlUkYSZ+U2S7+u6cjXJ/OacT0m+zpw5v3OU1hohhBD5i4vRAYQQQtieFHchhMiHpLgLIUQ+JMVdCCHyISnuQgiRDxUyquMyZcroqlWrGtW9EHZ1I/kGF+MukmZJo7BrYSoWr0ipR0oZHUvkA/v377+mtX40u+sMK+5Vq1Zl3759RnUvhN2EHA5h0OpBpJnTAEgjjSi3KMa+OJaABgEGpxN5nVLqbE6uk2kZIWzs4w0fk2ROghTgasb3ksxJfLzhY0NziYJFirsQNnYu9lxGYQ8CpgGXbvu+EA4ixV0IG6tctDIsJGPUXhhYDKSBt5e3scFEgSLFXQgb0lrz+PbH4QxQG3gSiAHX31z54vkvDM0mChYp7kLY0Lhx49iyYgsvDX6Jyq9Xhueh2LPFsOyxUPxMcaPjiQLEsNUyQuQ38+fPZ/To0QQEBDBv6jyUUgCkpqbSokULBg4cyOHDhylXrpzBSUVBICN3IWxg06ZNDBgwgOeee44mTZqwbdu2rMfi4+Pp0KEDcXFxDBgwANmJVTiCFHchHtLRo0fx9/enZs2ahIaG8sQTT1C+fPmsx0uWLEmTJk346KOPMJlM/PjjjwamFQWFMmoU0axZMy03MYm87sqVK/j4+JCamsquXbuoUqXKPa/VWuPr68vmzZvZv38/9erVc2BSkV8opfZrrZtld52M3IV4QAkJCfj5+REdHc2aNWsoUqQIV65cuef1ZrOZzz77jKJFixIQEEBqaqoD04qCRoq7EA8gPT2d1157jYMHD7Jo0SKaNm3Kli1bCA4OJj09/a7P2bhxI+vXr2fq1KkcOnSITz75xMGpRUEiq2WEyCWtNcOGDWPNmjX8+OOP+Pn5AeDr60tUVBSFCt3918rHx4f69etTqVIlBg8ezPjx4+nYsSPt2rVzZHxRQMicuxC5NH78eEaMGMGIESP45ptvHqiNxMREmjRpQmJiIhEREZQqJTtGipyROXch7GDJkiWMGDGCV155ha+++gqAlJQUFi5ceN/59lssFgsbNmzg5MmTLFiwgKioKIYMGSLLI4XNSXEXIoe2b99Onz59aN26NT/99BMuLhm/PteuXePixYtYrdZs23BxceHUqVNcuXKFpk2bMmbMGJYsWcLcuXPtHV8UMDItI0QOREZG0rJlS0qVKsXOnTspXbr03x63WCy4urrmqK309PSseXmLxUK7du04cOAA4eHhVKtWzebZRf4i0zJC2Eh0dDSdOnVCKUVYWNjfCntSUhJa6xwXdiCrsCcnJ+Pq6srcuXNxdXWld+/e91xpI0RuSXEX4j6Sk5Pp0qULFy9eZPXq1VSvXj3rMa01ISEhLF68ONftRkZGMmHCBK5cuUKVKlX48ccf2blzJ+PGjbNlfFGASXEX4h4sFgu9e/dm9+7dLFiwAB8fn39c06xZM+rXr5/rtitVqkTTpk155JFHAOjVqxe9evVizJgx7Nq166GzCyFz7kLcw7///W8mTpzIxIkTef/99+3eX0xMDI0aNaJQoUIcPHiQYsWK2b1PkffInLsQD+GHH35g4sSJvPfee3ct7DExMRw+fBiLxfJQ/URHR/Pnn38CUKJECebNm8fp06cd8o+JyN+kuAtxh5UrVzJs2DBeeuklvvvuu7teEx4ezooVK0hMTHyovjZu3IjJZMpaRvnMM88watQo5syZw/Llyx+qbVGwybSMELfZs2cPzz77LA0aNGDTpk14enre9TqtNVFRUX/b2vdB3Lx5k8KFC1OkSJGs75nNZlq1asWpU6eIiIigYsWKD9WHyF9kWkaIXDp9+jQvvvgi5cuXZ/Xq1fcs7ABKqYcu7JCx1/vthR3Azc2NkJAQUlJS6N+/f45ujhLiTlLchQBu3LhBp06dMJvNhIWFUbZs2bteZ7FYmDNnDkePHrVZ34mJiYSGhvLXX39lfa9WrVpMnDiR3377jUmTJtmsL1FwSHEXBV5qair+/v6cPn2alStXUrt27Xtem5iYiIuLyz13fnwQHh4exMXFkZyc/Lfvv/nmm3Tt2pWPPvqI8PBwm/UnCoZs59yVUh7A74A7GVsEL9Vaf3bHNQqYDPgCSUB/rfWB+7Urc+7CGVitVnr37k1oaCihoaH07NkzR8/TWmcdgG0L92ovOjqahg0bUrp0afbu3Zu1Ll4UXLacc08F2mmtnwQaAR2VUnfezdEJqJn5MQiYmru4Qhhj9OjRhIaG8uWXX2Zb2GNjY7NOT7JlYb/Vntaa69ev/+37jz76KEFBQRw5coRRo0bZtE+Rv2Vb3HWGhMwv3TI/7hzudwXmZl67CyihlHrMtlGFsK0ZM2bw5ZdfMmjQIEaOHJnt9WFhYUybNs1u2/Pu3LmTwMBA4uLi/vb9jh078u677/L999/zyy+/2KVvkf/kaOJQKeUK7AdqAIFa6913XFIROH/b1xcyv3f5jnYGkTGyx9vb+wEjC/HwwsLCGDp0KJ06dSIwMDBHI/FnnnmGmJgYm4/ab6lbty5ubm53nXr5+uuv2bhxI/379yciIoJHH33ULhlE/pGjN1S11hatdSOgEvCUUurOzTTu9tP+j+GN1nqG1rqZ1rqZ/HAKoxw6dIhXXnmFhg0bsmjRohy/OVqxYkWeeOIJu+UqWbIkzZs3x83N7R+PPfLII4SEhHDjxg3efPNNOdxDZCtXq2W01jHAZqDjHQ9dACrf9nUl4NLDBBPCHs6dO4evry8lS5ZkzZo1Odq/JTk5mQ0bNpCQkJDttQ9La83Ro0eztiS43ZNPPsmXX37JypUrmTVrlt2ziLwt2+KulHpUKVUi8/NHgPbAnT95q4C+KoMPEKu1vowQTiQ2NpbOnTuTmJiIyWSiQoUKOXremTNn2LZtm0OKO8COHTvYu3fvXR97//33ad++Pe+///7f1sULcaecLIVsCPwEuJLxj8FirfUYpdQQAK31tMylkFPIGNEnAa9rre+7zlGWQgpHSktLw9fXly1btrBu3Tqef/75XD0/Pj7eYbs0xsfHU6RIkaxj/O508eJFGjZsSPXq1dm+fftdp3FE/pXTpZDZTjZqrSOAxnf5/rTbPtfA27kNKYQjaK0ZNGgQGzZsIDg4OFeF3Wq14uLi4tDtd2/1da+17xUrVmTGjBm8/PLL/O///i///e9/HZZN5B1yh6rI98aMGcNPP/3E559/Tr9+/XL8PK01QUFBbN682X7h7uHKlSv88MMPXLp097euunfvzuuvv864cePYunWrg9OJvECKu8jXbhX1/v378+mnn+bquRaLhccee4ySJUvaKd29lShRghIlStx3v/jJkydTrVo1+vTpQ2xsrAPTibxAtvwV+daGDRvo2LEjbdu2xWQyUbhwYaMj2dyuXbt4+umn6dmzJ/Pnzzc6jnAA2fJXFGh//PEH3bp1o06dOixbtizXhT02Npbo6Gg7pcs5s9nMhQsX7vm4j48Pn3zyCSEhIYSGhjowmXB2UtxFvnPp0iV8fX0pUqQIJpMJLy+vXLexfft2pk+fTkpKih0S5tzatWuZP38+aWlp97zm448/pmXLlrz11lucPXvWgemEM5NpGZGvJCQk0KZNGyIjI/n9999p3PgfC71yJCkpifPnz993+19HuHr1KsnJyXh7e99324NTp07x5JNP0qRJEzZu3Iirq6sDUwpHkmkZUeCkp6fz6quvEhERweLFix+4sAN4enoaXtgBypYtS5UqVbLdz6ZatWr88MMP/P7773z77bcOSiecmRR3kS9orXnnnXcwmUz8+OOPdOrU6YHasVgsrFixgsuXnecGa7PZzObNm4mMjLzvdf369aNHjx588skn7N+/30HphLOS4i7yhW+++Ybp06czatQoBg0a9MDtXLt2jRMnTpCYmGjDdA/H1dWV8PBwzp07d9/rlFJMmzaNcuXKERAQQFJSkoMSCmckc+4iz1u4cCGvvfYar732GvPnz7/nbfs5lZ6ejqurq9229n0QaWlpOV7xs3HjRtq3b8/gwYOZOlXOzclvZM5dFAhbt26lX79+tGnThqCgoIcq7KmpqWitKVSokFMVdiCrsJvN5myvbdeuHR9++CHTpk1j9erV9o4mnJQUd5Fn/fnnn3Tt2pXHH3+cFStW4O7u/lDtLVu2jAULFtgone0dPXqU8ePH5+hu1P/+9780atSIgQMHcuXKFQekE85GirvIk6KiovD19cXNzY2wsDBKlSr10G3WqlXLKVbI3EtuDgtxd3cnJCSE+Ph4Xn/9dTncowCS4i7ynKSkJLp06cKVK1dYs2YNjz/+uE3abdasGc2aZTuVaRgvLy+6dOmS45uy6tWrx7fffsu6desIDAy0czrhbKS4izzFYrHQq1cv9u7dS2hoKM2bN3/oNpOSkjhy5AhWq9UGCe3vxo0bnD59OkfXvv3223Tq1IkRI0Zw9OhROycTzkSKu8hT/v3vf7Ny5UomT55M165dbdJmREQES5Ys4fr16zZpz95WrlzJ2rVrczTVopRizpw5FC1alF69epGamuqAhMIpaK0N+WjatKkWIjcmTpyoAf3BBx/YtF2LxaLPnj1r0zbtKSoqSsfHx+fqOatWrdKAHj58uJ1SCUcB9ukc1FhZ5y7yhOXLl/Pyyy/j7+/PkiVLHnote0E0ZMgQZsyYwW+//Ua7du2MjiMekKxzF/nGrl27CAgIoEWLFja5SekWrTULFy7kjz/+sEl7jhQXF8fixYvvux3wnSZMmECtWrXo27cvN27csGM64QykuAundvLkSV588UUqVqzIqlWreOSRR2zWdnJyMomJiTm6McjZuLu7c/nyZWJiYnL8nCJFihASEkJUVBRDhgyR5ZH5nEzLCKd1/fp1WrZsyfXr19m5cye1atWySz/6HgdRO7sHzf3VV1/x0UcfERwcnKszZYVzkGkZkaelpKTQtWtXzp07x6pVq2xe2BMTE7MOwMiLhR3+P3d8fHyunjdixAjatGnDO++8w6lTp+wRTTgBKe7C6VitVvr168f27duZN28erVu3tnkfGzduZMqUKfc9gDov2Lx5M1OmTMnVEkdXV1fmzZuHq6srvXv3Jj093Y4JhVGkuAun89FHH7F48WK+/fZbevToYZc+GjVqRNu2bfP8iUV16tThueeey/WbzN7e3kydOpWdO3cybtw4O6UTRpI5d+FUpk6dytChQxk6dChTpkzJs1MmeUXv3r1ZuHAh27Ztw8fHx+g4Igdkzl3kOWvWrOGdd97Bz8+PyZMn26Wwp6en8/vvv5OQkGDzto2iteb48eOcOXMm188NDAykUqVKBAQE5HruXjg3Ke7CKezfv59XX32Vxo0bs3DhQgoVKmSXfs6ePcumTZu4evWqXdo3gtaaX375hd27d+f6uV5eXsybN48zZ84wbNgwO6QTRpFpGWG4s2fP4uPjg7u7O7t27aJ8+fJ27e/GjRuULFkyX0353LhxgxIlSjzwDV4ff/wx48aNY+nSpXTv3t3G6YQt5XRaRoq7MFRMTAytW7fm4sWL7Nixg3r16tmtr7y6nj03HvT/0Ww206pVK06ePMnhw4epWLGiHdIJW5A5d+H00tLS6NatG5GRkaxYscKuhR1g8eLFbNy40a59GOnChQtMnTqVmzdv5vq5bm5uhISEkJqaSr9+/fLM9sfi3qS4C0NorXnjjTfYtGkTc+bM4bnnnrNrf1arlSJFiuDh4WHXfoxUvHhxChcuTHJy8gM9v1atWkyaNIkNGzYwadIk24YTDifTMsIQn376KWPHjmXs2LGMHj3a6Dgik9Yaf39/wsLC2LNnD08++aTRkcQdZFpGOK05c+YwduxYBg4cyMcff2z3/pKSkvLMQRy2kJ6e/sCrgZRSzJo1i1KlShEQEPDArwKE8aS4C4dav349gwcP5oUXXmDq1KkOeYNzz549TJkyhbi4OLv35QyWLVtGSEjIA8+blylThuDgYI4cOcKoUaNsnE44in0WEwtxFxEREXTv3p169eqxZMkS3NzcHNJvs2bNKFmyJMWLF3dIf0Zr3bo1ZrP5of7h7NChA++99x7ff/89vr6+dOjQwYYJhSPInLtwiIsXL9KiRQsg4/CNSpUqGZxIZCc5OZnmzZtz/fp1IiIiePTRR42OJJA5d+FE4uLi6Ny5M3Fxcaxdu9ZhhV1rTVhYGJcuXXJIf84kLS2NrVu35uqkpjs98sgjLFiwgBs3bvDGG2/I4R55jBR3YVdms5kePXrwxx9/sHTpUoeuvrh58yYRERFER0c7rE9nsmPHDk6ePPlQbTRs2JAvv/ySVatWMXPmTBslE46Q7bSMUqoyMBcoD1iBGVrryXdc8yywEjid+a3lWusx92tXpmXyP601b775JrNnz2b27NkMGDDA4RnS0tJwdXXN81v7PoikpCQ8PT0fuh2r1UqHDh3YsWMHBw8etNuJWCJnbDktkw58qLWuC/gAbyul7nYr4VatdaPMj/sWdlEwjBs3jtmzZzN69GiHF/ZbB1AULly4QBZ2IKuwP+yBJC4uLgQHB+Ph4UFAQECePHO2IMq2uGutL2utD2R+Hg8cA2TjCXFfISEhjB49mt69ezNmjOP/rV+7di1z584t8PPEERERTJw4kZSUlIdqp2LFisyYMYN9+/bx+eef2yacsKtczbkrpaoCjYG77S3aUikVrpQKU0o9cY/nD1JK7VNK7Suo86AFwebNm3n99dd59tlnmT17tiGbdVWsWJHHH388328Ulp2yZctSo0YNm4y2u3fvzoABA/jyyy/ZunWrDdIJe8rxUkilVFFgC/CF1nr5HY8VB6xa6wSllC8wWWtd837tyZx7/nTs2DFatWrFY489xvbt2ylZsqTRkYQNJSQk0KhRI9LT0wkPD8fLy8voSAWOTZdCKqXcgGVAyJ2FHUBrHae1Tsj83AS4KaXK5DKzyOOuXLlCp06dcHd3x2QyGVLYzWYzf/75p+xqeIeYmBibLAktWrQoISEhXLhwgbffftsGyYS9ZFvcVcbr2tnAMa31d/e4pnzmdSilnspst+Bs5iFITEzEz8+P6Oho1qxZQ9WqVQ3JceTIERYuXPhQ67vzG601CxYswGQy2aS9Fi1a8OmnnxISEkJoaKhN2hS2l5OlkE8DW4HDZCyFBPgP4A2gtZ6mlHoHeIuMlTXJwL+11jvu165My+QfFosFf39/1q5dy8qVK/Hz8zMsi9Vq5eTJk9SoUaPAz7ff7sKFCxQvXtxmWzCkp6fTtm1bjhw5Qnh4OFWqVLFJuyJ7chKTcAitNe+++y6BgYEEBgYydOhQoyMJBzl16hSNGjWicePGbNy4scAuOXU02X5AOMR3331HYGAgw4cPN7ywr169msOHDxuawZnFxMSwbNkybty4YZP2qlWrxg8//MDvv//Ot99+a5M2he1IcRcPbOnSpQwfPpwePXrw9ddfG5olLS2Ny5cvExsba2gOZ+bq6srJkyeJioqyWZt9+/alR48efPLJJ8grceci0zLigezYsYN27drRtGlTNmzY4BTH12mt0Vrj4iJjlnuxWCw2nz65ceMGDRs2pEiRIhw4cIAiRYrYtH3xdzItI+wmMjKSLl264O3tzcqVKw0v7FFRUaSmpqKUksKejVuF3ZYnLJUqVYq5c+cSGRnJhx9+aLN2xcOR3wSRK9HR0XTq1AmlFGFhYZQpY+ztDBaLhdDQUJYuXWpojrxk/fr1TJ069aH3nLldu3btGD58ONOnT2fVqlU2a1c8ODmJSeRYcnIyXbp04eLFi2zatInq1asbHQlXV1e6d+8uKzVyoWbNmhQpUgSr1WrTP7exY8eyfv16Bg4cyOHDhylfvrzN2ha5JyN3kSNWq5U+ffqwe/duQkJC8PHxMTpS1s6PlStXpkKFCganyTuqVq1Kq1atbH7Mobu7OwsWLCAhIYHXX3+9wG/aZjQp7iJHRowYwbJly5gwYQLdunUzOg4pKSkEBgZy4MABo6PkSVprTpw4weXLl23abt26dRk/fjzr1q0jMDDQpm2L3JHiLrI1ZcoUvvvuO959913ef/99o+MAGcWpUqVKlCtXzugoeVJ6ejrLly9n9+67bfD6cIYOHYqvry8jRozg6NGjNm9f5IwshRT3tWrVKvz9/XnxxRdZtmyZzG3nI1FRUZQpU8Yuf6dRUVE0aNCAChUqsHv3btzd3W3eR0ElSyHFQ9u7dy89e/akadOmLFiwwCkKe0pKCitXriQuLs7oKHleuXLl7PZ3Wq5cOebMmUN4eDijR4+2Sx/i/qS4i7s6ffo0fn5+lC9fntWrV9vkLE5buHjxIkePHiUhIcHoKPnCuXPnmDVrFklJSTZv28/PjyFDhjB+/Hg2bNhg8/bF/UlxF/9w8+ZNfH19MZvNmEwmp5rXrl69Oh988IGsjrERDw8PzGaz3V4JTZgwgdq1a9OvXz+b7WkjckaKu/ib1NRU/P39OXXqFD///DN16tQxOhKQscb+9OnTAIbfEZuflC1bliFDhthtTbqnpychISFERUUxePBgWR7pQFLcRRar1cqAAQPYsmULwcHBtGnTxuhIWbZv3868efNkYzA7UEphsVi4efOmXdpv2rQpY8eOZenSpfz000926UP8kxR3keWTTz5hwYIFjBs3jtdee83oOH/Ttm1bevXqJWd22klISAiLFi2y28h6xIgRtG3blnfffZeTJ0/apQ/xd1LcBQAzZ85k3LhxDBo0iFGjRhkdJ0taWhoWiwU3Nzdq1KhhdJx8q1WrVrRv395u7bu6ujJ37lxcXV3p06dP1t3Fwn6kuAvCwsJ466236NSpE4GBgU51PJ3JZCIoKEgOvLazGjVq2P1oQm9vb6ZNm8bOnTv54osv7NaPyCDFvYA7dOgQr7zyCg0bNmTRokUUKuRce8nVrl2bevXqyVa+DpCamsr27du5du2a3fro2bMnvXv3ZuzYsezatctu/Qgp7gXa+fPn6dy5MyVLlmTNmjUUK1bM6Ej/ULduXVq1amV0jAIhPT2dTZs2ERkZadd+pkyZQqVKlQgICCA+Pt6ufRVkUtwLqNjYWHx9fUlISMBkMjnduvGwsDDCw8ONjlGgFClShPfee4+WLVvatR8vLy/mz5/PmTNnGDZsmF37KsikuBdAZrOZl19+mT///JPly5dTv359oyP9jdls5vLly3LTiwGKFy8OYPf16E8//TQfffQRQUFBLFu2zK59FVSycVgBo7VmwIABBAcHExwcTL9+/YyOdFdaa5sfJiFy5uDBg2zbto233nrLru/BmM1mWrduzYkTJzh8+DAVK1a0W1/5iWwcJu5q7NixBAcH89lnnzllYT906FDWeahS2I3h5eVFhQoVSE1NtWs/bm5uzJ8/n9TUVPr16ycromxMinsBMnfu3Kyi/tlnnxkd5x+io6NZuXIl8orOWNWqVaN79+4UKVLE7n3VqlWLSZMmsWHDBiZOnGj3/goSmZYpIDZu3EiHDh1o06YNYWFhFC5c2OhId3Xp0iW7bkUrci4uLo60tDS7H4Kutcbf35+wsDD27NnDk08+adf+8jqZlhFZjhw5Qrdu3ahduzbLli1zysJ+a8+YChUqSGF3AlarlVmzZvHrr7/avS+lFLNmzaJUqVL06tWL5ORku/dZEEhxz+cuX76Mr68vnp6emEwmSpQoYXSkfzh+/Djff/89Z8+eNTqKyOTi4kLXrl3x9fV1SH9lypQhODiYo0ePMnLkSIf0md9Jcc/HEhIS8PPz4/r166xduxZvb2+jI91V5cqVadmyJZUqVTI6irhN9erVHToY6NChA8OGDeOHH35g3bp1Dus3v5Link+lp6fz6quvEh4ezuLFi2ncuLHRke5Ka42npyft27eX6RgndPPmTVauXEliYqJD+vvqq6+oX78+/fv3Jzo62iF95ldS3PMhrTXvvPMOJpOJH3/80WEvrXPr2LFjhIaGyhyrE7NYLBw5coRLly45pD8PDw9CQkK4efMmb7zxhhzu8RCkuOdD33zzDdOnT2fUqFEMGjTI6Dj3lJKSQkpKilO+wSsylClThuHDh1OzZk2H9dmwYUO++uorVq1axcyZMx3Wb34jSyHzmYULF/Laa6/Rs2dPQkJCnH43Ra21U20xLO4tLS3NYf8QW61WOnTowI4dOzh48CC1atVySL95gSyFLIC2bt1Kv379eOaZZwgODnbawh4ZGcmpU6cApLDnEWFhYcyaNcth0yQuLi789NNPeHh4EBAQgNlsdki/+Ylz/vaLXDt+/Dhdu3bl8ccf5+eff8bd3d3oSHeltWbbtm2sX79e5lPzkKpVq9KgQQOHbhFQoUIFZs6cyb59+/j8888d1m9+IdMy+cDVq1fx8fEhISGBXbt2Ua1aNaMj3ZfZbCYpKUnOQxU5MnDgQIKCgti8ebNTHdpuFJmWKSCSkpJ48cUXuXLlCmvWrHHqwh4dHZ11HqoU9rxHa82pU6e4fv26Q/udPHky1apVo0+fPsTExDi077ws2+KulKqslNqklDqmlDqilPrH7voqw/dKqRNKqQilVBP7xBW3s1gsBAQEsHfvXkJDQ3nqqaeMjnRPqampBAcHs3r1aqOjiAeUkpJCaGgoe/bscWi/RYsWJSQkhIsXL/L22287tO88TWt93w/gMaBJ5ufFgL+Aendc4wuEAQrwAXZn127Tpk21eDjDhg3TgJ48ebLRUXLkyJEj+sqVK0bHEA/h3Llz2mw2G9L3mDFjNKBDQkIM6d9ZAPt0NvVVa537OXel1EpgitZ6/W3fmw5s1lqHZn59HHhWa335Xu3InPvDmTx5Mu+//z7vv/++02+VarVanXbljsg70tPTadu2LX/88QcRERFUqVLF6EiGsMucu1KqKtAY2H3HQxWB87d9fSHze3c+f5BSap9Sap/cWvzgVqxYwQcffIC/vz/jx483Os59JSYmEhgYyF9//WV0FGEjZ86cYd68eQ5fnlioUCHmz5+P1po+ffpgsVgc2n9ek+PirpQqCiwD3tdax9358F2e8o+XBFrrGVrrZlrrZo8++mjukgoAdu/eTa9evXjqqaeYP3++0+/Hkp6ejpeXl1PuRikejNaa2NjYrG2aHenxxx9nypQpbN26lW+++cbh/eclOZqWUUq5AWuAX7TW393lcZmWcYCTJ0/SsmVLihUrxs6dOylbtqzRkUQBdKtmGHUDmtaanj17snz5cnbu3EmzZtnOUOQrNpuWURl/g7OBY3cr7JlWAX0zV834ALH3K+wi965fv06nTp2wWCyEhYU5fWFPTEzkl19+sfs5nMLxlFIopbBarcTHxxvS/7Rp0yhfvjwBAQEO27Eyr8nJtExroA/QTil1KPPDVyk1RCk1JPMaE3AKOAHMBIbaJ27BlJKSQteuXTl37hyrVq3KE/tsnDx5kn379hny0l04RlBQED///LMhfZcsWZK5c+cSGRnJhx9+aEgGZ1couwu01tu4+5z67ddoQBag2oHVaqVfv35s376dxYsX07p1a6Mj5UjDhg2pVq0aRYsWNTqKsJMWLVrg5uZmWP/PPfccw4cP59tvv8XX15cuXboYlsUZyfYDTm7kyJF88803fPPNN4wYMcLoONlKTEwkISGBcuXKGR1FFACpqan4+Phw4cIFDh8+TPny5Y2OZHey/UA+MG3aNL755hveeusthg8fbnScHNmwYQOzZ8+WAzgKiNTUVHbt2kVCQoIh/bu7u7NgwQISEhJ4/fXXZTO620hxd1Jr167l7bffpnPnznz//fd5Zmvc9u3b0717dx555BGjowgHSEhI4JdffuHPP/80LEPdunUZP34869atY8qUKYblcDYyLeOE9u/fT9u2balduzZbtmzJE/PWZrOZQoUK5Zl/hITtXL9+ndKlSxuaQWuNn58fGzZsYP/+/TzxxBOG5rEnmZbJo86ePYufnx+lS5dmzZo1eaKwa61Zvnw5ixcvlpfFBdCtwm7k371Sijlz5lC8eHF69eolS3CR4u5UYmJi8PX1JTk5GZPJxGOPPWZ0pByrWrUqVapUkZF7AbVv3z7mzJljaIEvV64cc+bMISIigo8//tiwHM5CiruTSEtLo1u3bkRGRrJixYo89bJSKUWLFi3w8fExOoowiIeHB8WKFTN8xOzn58dbb73FhAkT2LBhg6FZjCZz7k5Aa02/fv2YN28ec+fOpU+fPkZHyhGtNWFhYdSpU8epDwkRBUtSUhJNmzYlPj6eiIgISpUqZXQkm5I59zzk888/Z968eYwZMybPFHaA5ORkTp06xeXLstOEyJCQkGD4Xcmenp6EhIRw9epVBg8eXGDfB5LibrCgoCDGjBnDgAEDGD16tNFxcsXT05PBgwfTsmVLo6MIJ5Cenk5gYCCbNm0yOgpNmjRh7NixLF26lJ9++snoOIaQaRkDrV+/Hl9fX5577jnWrl1r6K3cuaG15siRI9StW9fptxwWjnX06FHKly/vFFMhFouF559/nv3793Po0CGqV69udCSbkGkZJxcREUH37t2pV68eS5cuzTOFHeD8+fMsXbqUiIgIo6MIJ1OvXj2nKOwArq6uzJ07F1dXV/r06UN6errRkRxKirsBLl68iK+vL8WLF2ft2rUUL17c6Ei54u3tTZ8+fXjyySeNjiKc0I0bNzCZTA4/qeluvL29mTZtGjt37uSLL74wOo5DSXF3sLi4ODp37kxcXBxr166lUqVKRkfKkfT0dEwmE5cuXQKgevXqci6quKv4+HgOHDiQ9bNitJ49e9K7d2/Gjh3Lzp07jY7jMPLb6UBms5lXXnmFP/74gyVLluSpkW9aWhrHjx/n7NmzRkcRTs7b25sPP/zQqQ6wnjJlCpUrV6Z3796GHDBiBCnuDqK1ZujQofzyyy9Mnz6dDh06GB0pR06fPo3WGk9PT4YOHSorY0S2lFJZG8c5yyHWXl5ezJ8/nzNnzvDee+8ZHcchpLg7yJdffsmsWbP4+OOPGThwoNFxcuT06dP89NNPWW+curu7G5xI5CWrV69m/vz5RsfI0rp1a/7zn/8QHBzM0qVLjY5jd7IU0gEWLFhAQEAAAQEBzJs3z+n3X7Farbi4uKC1JiIigvr168uSR5Fr+/fvJz4+nrZt2zrNz7zZbObpp58mMjKSiIiIPPOe1+1yuhRSirudbdmyhRdeeIFWrVqxbt06px/9Hj9+nF9//ZUBAwZQpEgRo+MIYXORkZE0btwYHx8ffv311zy3MEDWuTuBY8eO8dJLL1G9enWWL1/u9IUdMuYmvby8sFqtRkcR+YDWmrNnzxp2UtPd1KxZk0mTJrFhwwYmTpxodBy7keJuJ1FRUfj6+uLu7o7JZKJkyZJGR7qna9eucetVVPny5enbty/FihUzOJXID+Li4ggODmbv3r1GR/mbgQMH8tJLL/Gf//yH8PBwo+PYhRR3O0hMTMTPz4+rV6+yZs0aqlatanSk+9q9ezebNm0iJSXF6Cgin/Hy8iIgIICnn37a6Ch/o5Ri5syZlC5dml69euXLM3+luNuYxWLhtdde48CBAyxcuJBmzbKdGjOE2WzOeqn8wgsvMHjwYDw8PAxOJfKjGjVqOOX2GmXKlCE4OJijR48ycuRIo+PYnBR3G9JaM2zYMFavXs3333/Piy++aHSku9JaM2/evKxj8dzc3PLcFggibzl9+jRLly51uu13X3jhBYYNG8YPP/zAunXrjI5jU1Lcbei7774jMDCQ4cOH8/bbbxsd556UUrRq1Yo2bdo4zRI1kb8lJSVx6dIlw/d6v5uvvvqK+vXr079/f6Kjo42OYzOyFNJGli5dSo8ePejRowcLFy50uuVVZrMZk8lEzZo1qVevntFxRAFza/WVs/1e3HL48GGaN29Ohw4d+Pnnn5160CNLIR1ox44d9O7dm1atWjF37lyn/AF2cXHh2rVr3Lhxw+googBycXHBxcUFq9XqlG9eNmjQgK+++opVq1YxY8YMo+PYhIzcH1JkZCQtW7akVKlS7NixgzJlyhgd6W+OHj1KzZo1cXNzw2KxyJ2mwjBaa6ZPn07ZsmXp1q2b0XH+wWq10rFjR7Zt28bBgwepXbu20ZHuSkbuDnDt2jV8fX1RSmEymZyusEdFRbF48eKsNcZS2IWRlFI0bdrUaacFXVxcCA4OxtPTk07dOlFlfBVc/teFqpOqEnI4xOh4uSbF/QElJyfTpUsXLly4wKpVq6hRo4bRkbKkpaUBUK5cOfr27YuPj4/BiYTI0Lx5c+rUqWN0jHuqUKECvUf35vTR05xbeQ6N5mzsWQatHpTnCrwU9wdgtVrp06cPu3btYv78+U61De6JEyeYNGkSUVFRAFSrVs0p3wMQBVdaWhr79u3LGoQ4m5/5GeoD24AzGd9LMifx8YaPjQv1AOS3/gH8z//8D8uWLWP8+PF0797d6Dh/U758eapVqyabfgmndevO7ePHjxsdJUt0dDSbN2/GarVyLvYcNAQ8gZP/f8252HNGxXsgUtxzKTAwkAkTJvDOO+/wwQcfGB0HyPhlWb9+PVprihYtyssvv0zRokWNjiXEXVWqVInBgwdTv359wzLExMSwcePGrFOZoqKi+P3337l+/TreXt7wODAUeP7/n+Pt5W1I1gclxT0XVq9ezXvvvUeXLl2YNGmS06yFPXHiBOHh4cTFxRkdRYgceeyxxxz6+5OUlMTGjRuzznVNTk5m27ZtXLlyBYDatWszcuRIHn30Ub54/gs8PT3htvGRp5snXzyftw7YluKeQ/v27aNnz540adKEBQsWGL7yJC0tLetuupYtWzJ06FC8vLwMzSREbuzZs4dFixbZpW2LxcKGDRv4888/gYyVYjt27Mgq7uXKlWPkyJHUrFkTADc3t6wtuQMaBDDjxRlU8aqCQlHFqwozXpxBQIMAu2S1l0JGB8gLzpw5g5+fH2XLlmXNmjVOMZ+9ZMkSoqOjeffdd3F1dc0YaQiRh2itsVqtmM1mm2wstmXLFjw8PGjRogUuLi4cPnwYpRR16tTB3d2dkSNHZvXj4uJy3/MVAhoE5Llificp7tm4efMmnTp1IjU1lU2bNlGuXDnDsty64UwpxXPPPUdqaqrhryCEeFBPPfUULVq0eODn79mzh5iYGF544QUAzp8/n/Vek1Iqa+BzizPuTGlP2RZ3pdQcwA+4qrX+xzsgSqlngZXA6cxvLddaj7FhRsOkpqbi7+/PqVOn+PXXX6lbt65hWSwWCytXrqRMmTK0adOGChUqGJZFCFu4NeeemJiIUirbV5+HDx/m2LFjvPLKKwDcuHGD6OhotNYopQgICPjbPH5BH/jkZM49GOiYzTVbtdaNMj/yRWG3Wq0MGDCALVu2EBQURNu2bQ3N4+LiglLKad7EFcIWUlJSmDx5Mtu2bfvHYydOnGDOnDlZ6+FTUlKIj4/P+rpDhw706dMn63dCfjf+LtuRu9b6d6VUVQdkcSqffPIJCxYsYNy4cfTq1cuQDFprDh06RI0aNShWrBgvvfSS/ACLfMXDw4MOHTrg7e3NpUuXMJlMdOnShbJly+Li4oLWmoSEBEqVKkXz5s1p3rx51nPld+H+bDXn3lIpFQ5cAoZrrY/c7SKl1CBgEIC3t/OuGZ05cybjxo3jzTffZNSoUYbliI+Px2Qy0aJFC9q3by8/zCJfatq0KZCx9tzFxSVrZF6tWjWqVatmZLQ8LUe7QmaO3NfcY869OGDVWicopXyByVrrmtm16ay7Qq5btw4/Pz/+9a9/sXr1agoVcvx7zgkJCVlvDEVFRVG2bFkp7EIIwIG7Qmqt47TWCZmfmwA3pZRzbY+YQ4cOHaJHjx40aNCAxYsXG1LYz549y6RJk4iMjAQy1uNKYRdC5NZDF3elVHmVWX2UUk9ltnn9Ydt1tPPnz9O5c2dKlCjB2rVrKVasmCE5KlasSLNmzWQ1jBDioeRkKWQo8CxQRil1AfgMcAPQWk8DXgbeUkqlA8lAT+1sp+BmIzY2ls6dO5OQkMC2bdscXlivXLnC1q1b8ff3p1ChQnTsmN3iJCGEuL+crJZ5LZvHpwBTbJbIwcxmMz169ODYsWOEhYXRoEEDh2eIjY3l/PnzxMTEON2BH0KIvKlA36GqtWbw4MGsX7+eoKAg2rdv77C+U1NTuXLlClWqVKF27dpUq1atwN1BJ4SwnwK9cdh///tfgoKC+PTTT+nfv79D+zaZTISGhpKSkgIUvFujhRD2VWBH7vPmzePTTz+lb9++fP755w7p89ZGSa6urjz//PM0bdoUDw8Ph/QthChYCmRx37hxIwMHDqRdu3bMnDnTIUsNtdYsW7YMFxcX/P39KV68OMWLF7d7v0KIgqnAFfcjR47QrVs3atWqxbJlyyhcuLBD+lVKUa5cOTnPVAjhEAWquF++fBlfX188PT0xmUyUKFHCrv1prdm7dy+VKlWiQoUKPPPMM3btTwghbikww8iEhAT8/Py4fv06a9eudcjeNmlpaWzfvp2DBw/avS8hhLhdgRi5p6en8+qrrxIeHs6qVato3LixXfu7du0apUuXxt3dnQEDBsjcuhDC4fL9yF1rzbvvvovJZCIwMBBfX1+79hcVFcXUqVO5tSmal5eX7A0jhHC4fF/cv/32W6ZNm8bIkSMZPHiw3fq5teNC2bJladeuHU888YTd+hJCiOzk6+K+aNEiRo4cSc+ePRk3bpzd+rl8+TJBQUFZx4W1bt1aDqwWQhgq3xb3bdu20bdvX55++mmCgoLsugTRxcWFpKQkEhIS7NaHEELkRo4O67AHex7Wcfz4cVq1akWZMmXYsWMHpUuXtnkfycnJnDx5kvr1M84vsVqtsoZdCGF3Djusw9lcvXoVX19fXF1dCQsLs0thh4xXBitWrCAuLg5ACrsQwqnkq6WQSUlJdOnShcuXL7Np0yabn7+otSY1NRUPDw+effZZnnjiCVnmKIRwSvlmuGmxWOjduzd79uxhwYIFtGjRwuZ9/Pzzz8yfPx+LxYKbm5ucliSEcFr5ZuQ+fPhwVqxYwaRJk3jppZfs0ketWrWIj4+XKRghhNPLF8V98uTJTJo0iWHDhjFs2DCbtau1ZteuXXh5eVGvXj1Zuy6EyDPy/BB0xYoVfPDBB/j7+zNhwgSbtm21Wjly5Ah//fWXTdsVQgh7y9Mj9927d9OrVy+eeuop5s+fj6urq03avXTpEo8++ihubm707t0bd3d3m7QrhBCOkmdH7idPnuTFF1+kQoUKrFq1ymZ3hMbGxjJ79my2bNkCgIeHh+wNI4TIc/LkyP369ev4+vpisVgICwujbNmyD91mSkoKHh4eeHl54e/vT40aNWyQVAghjJHnRu4pKSm89NJLnD17lpUrV1KrVq2HbvPYsWNMmDCB69evA1C/fn0521QIkaflqZG71Wqlf//+bNu2jYULF/L0008/cFuxsbFYLBZKlSpF5cqVadSokcOO3BNCCHvLUyP3//znPyxatIivv/6aV1999YHbsVgszJw5k/Xr1wNQtGhROnfuTLFixWwVVQghDJVnRu7Tp0/n66+/ZsiQIYwYMSLXz4+NjeXo0aO0bNkSV1dXunTpYpO5eiGEcEZ5YuRuMpkYOnQonTt35ocffnig1SvHjh3jt99+48aNG0DG3ab2PiBbCCGM4vQj9wMHDvDKK6/QqFEjFi5cSKFCOYuckpLCb7/9Ru3atalZsyZNmzalbt26eHl52TmxEEIYz6lH7ufOnaNz586ULl2aNWvWULRo0WyfY7FYAHBzc+Ps2bNER0dnfS2FXQhRUDjtyD0mJgZfX1+Sk5P57bffeOyxx7J9zrZt2zh8+DCDBw/G1dWVIUOG2OyuVSGEyEuccuSelpZG9+7d+euvv1i+fPl9N+yKiYkhPT0dgDJlyuDt7Y3ZbAaQwi6EKLCcrrhrrXnjjTfYuHEjs2bNol27dve89tq1a3z//fccPHgQgDp16tC5c2fZC0YIUeA5XXH//PPPmTdvHmPGjKFv377/eDwmJoYTJ04AULp0adq3b0/t2rUdHVMIIZyaUxX3oKAgxowZw4ABAxg9evRdrzGZTKxatQqr1YpSilatWslRd0IIcQeneUP1t99+Y9CgQfzrX/9i2rRpWWvZ4+Li+P3332nXrh2enp506NABNzc3OQ1JCCHuwykq5OHDh+nevTt169Zl6dKluLm5obUGIDU1lfDwcM6fPw9kTMXISF0IIe5P3SqijtasWTO9b98+Ll68iI+PD1arld27d1OxYkVMJhOurq507NgR+P/teIUQoqBTSu3XWjfL7jpDp2Xi4+Pp3LkzMTEx/Prrr1SqVAkAFxeXv027SGEXQojcyXbkrpSaA/gBV7XW9e/yuAImA75AEtBfa30gu46bKqXLeniwPi2NH6dO5erVq7z11luULl36gf5HhBCiIMjpyD0nc+7BQMf7PN4JqJn5MQiYmpOAZ4F1KSlMK1SIAFdXmjdvLuvThRDCRnI0566UqgqsucfIfTqwWWsdmvn1ceBZrfXlbNrU/sBygCpV4MyZXIcXQoiCxpYj9+xUBM7f9vWFzO/dLdQgpdQ+pdQ+TzJeEgBw7pwNYgghhLjFFm+o3m1z9bu+HNBazwBmABRVSt/aWMCsdVqEUodtkOVhlQGuGR3iLpwxl2TKGcmUc86Yyxkz5eiWfFsU9wtA5du+rgRcyu5JibB/Xw5eWjiSUmpfTl7uOJoz5pJMOSOZcs4ZczlrppxcZ4tpmVVAX5XBB4jNbr5dCCGEfWU7cldKhQLPAmWUUheAzwA3AK31NMBExjLIE2QshXzdXmGFEELkTLbFXWv9WjaPa+DtB+h7xgM8x96cMRM4Zy7JlDOSKeecMVeezWTY9gNCCCHsxyk2DhNCCGFbUtyFECIfMqS4K6U6KqWOK6VOKKVGGZHhjjxzlFJXlVJ/GJ3lFqVUZaXUJqXUMaXUEaXUMCfI5KGU2qOUCs/M9L9GZ7pFKeWqlDqolFpjdJZblFJnlFKHlVKHcrp8zd6UUiWUUkuVUn9m/my1NDhP7cw/n1sfcUqp943MlJnrg8yf8T+UUqFKKcN3L1RKDcvMcyRHf0Zaa4d+AK7ASaAaUBgIB+o5OscdmdoATYA/jMxxR6bHgCaZnxcD/nKCPycFFM383A3YDfgY/WeVmeffwAIytskwPE9mpjNAGaNz3JHpJ+CNzM8LAyWMznRbNlfgClDF4BwVgdPAI5lfLyZjQ0QjM9UH/gA8yVgI8xtQ837PMWLk/hRwQmt9SmudBiwEuhqQI4vW+nfghpEZ7qS1vqwzd9fUWscDx7jHtg4OzKS11gmZX7plfhj+jrxSqhLQGZhldBZnppQqTsZAZjaA1jpNax1jaKi/ex44qbU+a3QQMgroI0qpQmQU1GxvzLSzusAurXWS1jod2AL43+8JRhT3HO9FIzJkbtzWmIyRsqEypz8OAVeB9VprwzMBk4D/AawG57iTBn5VSu1XSg0yOgwZr5ajgaDMKaxZSqkiRoe6TU8g1OgQWuuLwHjgHHCZjBszfzU2FX8AbZRSpZVSnmTcW1T5fk8worjneC8aAUqposAy4H2tdZzRebTWFq11IzK2mXhKKfWPnUIdSSl166yB/UbmuIfWWusmZGyL/bZSqo3BeQqRMf04VWvdGEgEDH/PC0ApVRjoAixxgiwlyZhNeByoABRRSvU2MpPW+hjwNbAeWEfGdHb6/Z5jRHF/oL1oCiKllBsZhT1Ea73c6Dy3y3w5v5n77/XvCK2BLkqpM2RM8bVTSs03NlIGrfWlzP9eBVaQMSVppAvAhdtebS0lo9g7g07AAa11lNFBgPbAaa11tNbaTMbO5K0MzoTWerbWuonWug0Z08iR97veiOK+F6iplHo881/rnmTsTyNuk3nC1WzgmNb6O6PzACilHlVKlcj8/BEyfgn+NDKT1vojrXUlrXVVMn6WNmqtDR1lASiliiilit36HHiBjJfWhtFaXwHOK6Vu7Sr4PHDUwEi3ew0nmJLJdA7wUUp5Zv4ePk/Ge16GUkqVzfyvN9CNbP68HH6GqtY6XSn1DvALGe+Oz9FaH3F0jtvdbf8crfVsIzORMSLtAxzOnOMG+I/W2mRcJB4DflJKuZIxMFistXaapYdOphywIqM2UAhYoLVeZ2wkAN4FQjIHVqdwgr2gMueQ/wUMNjoLgNZ6t1JqKXCAjKmPgzjHNgTLlFKlATPwttb65v0ulu0HhBAiH5I7VIUQIh+S4i6EEPmQFHchhMiHpLgLIUQ+JMVdCCHyISnuQgiRD0lxF0KIfOj/AOTuftr8MfvFAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "X = np.array([1, 1.2, 1.5, 1.8, 2.4, 3.3, 2.4, 1.5, 1.6])\n",
    "pivots = peak_valley_pivots(X, 0.2, -0.2)\n",
    "plot_pivots(X, pivots)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Intuitively, what he is saying seems to make sense. \n",
    "\n",
    "- 3.3 is the peak\n",
    "- 1.5 is the lowest point after it\n",
    "- 1.6 is above 1.5 so can't be the valley pivot\n",
    "\n",
    "The difficulty here is that 1.6 is not a peak, either. A local one, yes, but not according to the segmenter which requires `>20%` which 1.6 above 1.5 does not satisfy."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "anaconda-cloud": {},
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.13"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
